home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 2003 August / MW 8 2003 CD1.iso / Inside Macworld / Product News / gimp-1.2.4.sit / gimp-1.2.4 / plug-ins / perl / examples / stamps < prev    next >
Encoding:
Text File  |  2000-05-21  |  1.6 KB  |  63 lines

  1. #!/usr/app/bin/perl
  2.  
  3. eval 'exec /usr/app/bin/perl  -S $0 ${1+"$@"}'
  4.     if 0; # not running under some shell
  5.  
  6. use Gimp qw(:auto __ N_);
  7. use Gimp::Fu;
  8.  
  9. N_"/Xtns/Render"; # dummy translation for i18n bugs
  10.  
  11. sub stamps {
  12.     my ($size, $hole, $paper, $diameter, $gap) = @_;
  13.  
  14.     gimp_palette_set_background($paper);
  15.     $img = gimp_image_new($size, $size, RGB);
  16.     $layer = gimp_layer_new($img, $size, $size, RGB_IMAGE, "Layer 1", 100, NORMAL_MODE);
  17.     gimp_image_add_layer($layer, -1);
  18.     gimp_palette_set_background($hole);
  19.     $layer->gimp_edit_fill(BG_IMAGE_FILL);
  20.     gimp_selection_none($img);
  21.  
  22.     my $ncircles = int(($size + $gap) / ($diameter + $gap));
  23.     $x = 0;
  24.     for ($i=0; $i<$ncircles; $i++) {
  25.             gimp_ellipse_select($img,
  26.                     $x, 0,
  27.                     $diameter, $diameter,
  28.                     ADD, 1, 0, 0);
  29.             gimp_ellipse_select($img,
  30.                     0, $x,
  31.                     $diameter, $diameter,
  32.                     ADD, 1, 0, 0);
  33.             $x = $x + $diameter + $gap;
  34.     }
  35.     gimp_palette_set_background($paper);
  36.     gimp_edit_fill($layer, BG_IMAGE_FILL);
  37.     gimp_selection_none($img);
  38.  
  39. # here, at last, comes the clever part! :-)
  40.     $layer->channel_ops_offset(1, 0, -($diameter / 2), -($diameter / 2));
  41.     return $img;
  42. }
  43.  
  44. register    "stamps",
  45.         "Creates a rectangular image with stamp-like perforations.",
  46.         "Default values are not bad!",
  47.         "Claes G Lindblad <claesg\@algonet.se>",
  48.         "Claes G Lindblad <claesg\@algonet.se>",
  49.         "990314",
  50.         N_"<Toolbox>/Xtns/Render/Stamps...",
  51.         undef,
  52.     [
  53.     [PF_INT32, "size", "img size", 90],
  54.     [PF_COLOR, "paper", "paper color", [255, 255, 255]],
  55.     [PF_COLOR, "hole", "hole color", [0, 0, 0]],
  56.     [PF_INT32, "diameter", "diameter", 10],
  57.     [PF_INT32, "gap", "gap", 5]
  58.     ],
  59.     \&stamps;
  60.  
  61. exit main;
  62.  
  63.